<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      //每隔一秒输出一次,回调地狱
      //   setTimeout(() => {
      //     console.log("第一次");
      //     setTimeout(() => {
      //       console.log("第二次");
      //       setTimeout(() => {
      //         console.log("第三次");
      //       }, 3000);
      //     }, 2000);
      //   }, 1000);
      //三个状态pending 等待 ，resolve成功决定, reject拒绝
      //   new Promise((resolve, reject) => {
      //       setTimeout(() => {
      //           console.log("第一次");
      //           resolve()
      //       }, 1000);
      //   })
      //   .then(() => {
      //       return new Promise((resolve, reject) => {
      //       setTimeout(() => {
      //           console.log("第二次");
      //           resolve()
      //       }, 2000);
      //   })
      //   })
      //   .then(() => {
      //       return new Promise((resolve, reject) => {
      //       setTimeout(() => {
      //           console.log("第三次");
      //           resolve()
      //       }, 2000);
      //   })
      //   })

      //promise函数
      function print(delay, message) {
        return new Promise((resolve, reject) => {
          setTimeout(() => {
            console.log(message);
            resolve();
          }, delay);
        });
      }
      // print(1000,'第一次')
      // .then(() => {
      //     return print(2000,'第二次')
      // })
      // .then(() => {
      //     return print(3000,'第三次')
      // })
      // async,await  他们是CP，经常一起出现
    //   async function asyncFunc() {
    //     await print(1000, "第一次");  //await指令后面必须跟着一个promise
    //     await print(2000, "第二次");
    //     await print(3000, "第三次");
    //   }
    //   asyncFunc();

    // 捕获错误try-catch
    async function asyncFunc() {
        try {
            await new Promise((resolve, reject) => {
                // throw '出错了';
                reject('some error')
            })
        } catch (error) {
            console.log(error);
        }
    }
    asyncFunc();
      //执行的顺序
      //   new Promise((resolve, reject) => {
      //     let a = 6;
      //     let b = 5;
      //     if (b == 0) {
      //       reject("失败了");
      //     } else a=3
      //     resolve(a + b);
      //   })
      //   .then((value) => {
      //       console.log("2222222" + value);
      //       throw '我强制退出了'
      //     })
      //     .then((value) => {
      //       console.log("a+b=" + value);
      //     })

      //     .catch((err) => {
      //         console.log(err)
      //     })
      //     .finally(() => {  //最后一定会执行
      //         console.log('end')
      //     })
    </script>
  </body>
</html>
